home *** CD-ROM | disk | FTP | other *** search
- /*
- ##########################################################################
- #### ####
- #### The MusicBox Project ####
- #### ============================ ####
- #### ####
- #### MusicBoxControl.c ####
- #### ####
- #### Version 2.1os -- September 29, 2000 ####
- #### ####
- #### Copyright (C) 1994 Thomas Dreibholz ####
- #### 2000 Molbachweg 7 ####
- #### 51674 Wiehl ####
- #### Germany ####
- #### ####
- #### EMail: Dreibholz@bigfoot.com ####
- #### WWW: http://www.bigfoot.com/~dreibholz ####
- #### ####
- ##########################################################################
- */
- /***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
- /* MusicBox Control Port */
-
- #include "MusicBox.h"
- #include "MusicBoxLibrary.h"
-
- extern struct Einstellungen Einstellungen;
- extern struct MsgPort *ControlPort;
- extern struct ThisCD *ThisCD;
- extern struct Katalog *Katalog;
- extern struct Window *CDPlayerWnd;
- extern struct Gadget *CDPlayerGadgets[27];
-
- extern BOOL IsIconify;
-
- int ControlHandler()
- {
- REGISTER ULONG adr;
- int i,j,k,iconify;
- struct TagItem tag[2];
- struct MusicBoxCommand *mbc;
-
- iconify=0;
- mbc=GetMsg(ControlPort);
- if(mbc==NULL) return;
- do
- {
- mbc->Status=MBCS_OK;
- switch(mbc->Command)
- {
- case MBC_ICONIFY:
- iconify=1;
- break;
- case MBC_UNICONIFY:
- iconify=2;
- break;
- case MBC_GETPOSITION:
- if(Einstellungen.CDEingelegt)
- {
- if(Einstellungen.CDTyp==AUDIO)
- {
- mbc->MusicBoxInfo.Address=Einstellungen.Adresse;
- mbc->MusicBoxInfo.Function=Einstellungen.Funktion;
- mbc->MusicBoxInfo.Track=Einstellungen.Track;
- mbc->MusicBoxInfo.IsInserted=Einstellungen.CDEingelegt;
- mbc->MusicBoxInfo.IsAudioCD=Einstellungen.CDTyp;
- adr=Einstellungen.Adresse-ThisCD->Track[Einstellungen.Track-1].SAdresse;
- mbc->MusicBoxInfo.Minute=adr/75/60;
- mbc->MusicBoxInfo.Second=(adr/75) % 60;
- mbc->MusicBoxInfo.Frame=adr % 75;
- }
- else
- mbc->Status=MBCS_CDTYPE;
- }
- else
- mbc->Status=MBCS_EJECTED;
- break;
- case MBC_GETINFO:
- if(Einstellungen.CDEingelegt)
- {
- if(Einstellungen.CDTyp==AUDIO)
- {
- mbc->MusicBoxInfo.Address=Einstellungen.Adresse;
- mbc->MusicBoxInfo.Function=Einstellungen.Funktion;
- mbc->MusicBoxInfo.Track=Einstellungen.Track;
- mbc->MusicBoxInfo.IsInserted=Einstellungen.CDEingelegt;
- mbc->MusicBoxInfo.IsAudioCD=Einstellungen.CDTyp;
- adr=Einstellungen.Adresse-ThisCD->Track[Einstellungen.Track-1].SAdresse;
- mbc->MusicBoxInfo.Minute=adr/75/60;
- mbc->MusicBoxInfo.Second=(adr/75) % 60;
- mbc->MusicBoxInfo.Frame=adr % 75;
- mbc->MusicBoxInfo.TrackCount=ThisCD->Anzahl;
- mbc->MusicBoxInfo.DiscID=ThisCD->ID;
- strcpy(&mbc->MusicBoxInfo.CDTitle,&Katalog->CDName);
- for(i=0;i<Katalog->Anzahl;i++)
- {
- strcpy(&mbc->MusicBoxInfo.TrackInfo[i].Title,&Katalog->KE[i].Titel);
- mbc->MusicBoxInfo.TrackInfo[i].SAddress=ThisCD->Track[i].SAdresse;
- mbc->MusicBoxInfo.TrackInfo[i].TAddress=ThisCD->Track[i].TAdresse;
- }
- }
- else
- mbc->Status=MBCS_CDTYPE;
- }
- else
- mbc->Status=MBCS_EJECTED;
- break;
- case MBC_CHANNELS:
- if(mbc->Args[0]==-1L) mbc->Args[0]=MBCC_NOCHANGE;
- if(mbc->Args[1]==-1L) mbc->Args[1]=MBCC_NOCHANGE;
- switch(mbc->Args[0])
- {
- case MBCC_LEFT:
- i=0;
- j=AUDIO_LINKS;
- break;
- case MBCC_RIGHT:
- i=1;
- j=AUDIO_RECHTS;
- break;
- case MBCC_LR:
- i=2;
- j=AUDIO_BEIDE;
- break;
- case MBCC_NONE:
- i=3;
- j=AUDIO_AUS;
- break;
- default:
- i=100;
- break;
- }
- if(i!=100) Einstellungen.AudioL=j;
- switch(mbc->Args[1])
- {
- case MBCC_LEFT:
- k=1;
- j=AUDIO_LINKS;
- break;
- case MBCC_RIGHT:
- k=0;
- j=AUDIO_RECHTS;
- break;
- case MBCC_LR:
- k=2;
- j=AUDIO_BEIDE;
- break;
- case MBCC_NONE:
- k=3;
- j=AUDIO_AUS;
- break;
- default:
- k=100;
- break;
- }
- if(k!=100) Einstellungen.AudioR=j;
- SetzeLR();
- if(IsIconify==FALSE)
- {
- if(i!=100)
- {
- tag[0].ti_Tag=GTCY_Active;
- tag[0].ti_Data=i;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[21],CDPlayerWnd,NULL,&tag);
- }
- if(k!=100)
- {
- tag[0].ti_Tag=GTCY_Active;
- tag[0].ti_Data=k;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[23],CDPlayerWnd,NULL,&tag);
- }
- ZeigeLR();
- }
- break;
- case MBC_VOLUME:
- if(mbc->Args[0]==-1L) mbc->Args[0]=Einstellungen.VolumenL;
- if(mbc->Args[1]==-1L) mbc->Args[1]=Einstellungen.VolumenR;
- Einstellungen.VolumenL=(UBYTE)mbc->Args[0];
- Einstellungen.VolumenR=(UBYTE)mbc->Args[1];
- Volumen();
- ZeigeVolumen();
- if(IsIconify==FALSE)
- {
- tag[0].ti_Tag=GTSL_Level;
- tag[0].ti_Data=Einstellungen.VolumenR;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[25],CDPlayerWnd,NULL,&tag);
- tag[0].ti_Tag=GTSL_Level;
- tag[0].ti_Data=Einstellungen.VolumenL;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[23],CDPlayerWnd,NULL,&tag);
- }
- mbc->Args[0]=Einstellungen.VolumenL;
- mbc->Args[1]=Einstellungen.VolumenR;
- break;
- case MBC_VERSION:
- mbc->Args[0]=VERSION;
- break;
- case MBC_PLAY:
- if(Einstellungen.CDEingelegt)
- {
- if(Einstellungen.CDTyp==AUDIO)
- {
- Einstellungen.Funktion=STOP;
- Symbol(WIEDERGABE);
- Einstellungen.Track=mbc->Args[0];
- if(Einstellungen.Track<1) Einstellungen.Track=1;
- if(Einstellungen.Track>ThisCD->Anzahl) Einstellungen.Track=ThisCD->Anzahl;
- WiedergabeClicked();
- }
- else
- mbc->Status=MBCS_CDTYPE;
- }
- else
- mbc->Status=MBCS_EJECTED;
- break;
- case MBC_STOP:
- StopClicked();
- break;
- case MBC_PAUSE:
- if(Einstellungen.Funktion==WIEDERGABE)
- WiedergabeClicked();
- else
- mbc->Status=MBCS_NOT_PLAYING;
- break;
- case MBC_CONTINUE:
- if(Einstellungen.Funktion==PAUSE)
- WiedergabeClicked();
- else
- mbc->Status=MBCS_NOT_PAUSED;
- break;
- case MBC_PLAYADR:
- if(Einstellungen.CDEingelegt)
- {
- if(Einstellungen.CDTyp==AUDIO)
- {
- Symbol(POSITION);
- Einstellungen.Adresse=mbc->Args[0];
- Einstellungen.Funktion=PAUSE;
- Wiedergabe();
- Einstellungen.Funktion=WIEDERGABE;
- ZeigeTrackDisplay();
- }
- else
- mbc->Status=MBCS_CDTYPE;
- }
- else
- mbc->Status=MBCS_EJECTED;
- break;
- case MBC_EJECT:
- if(Einstellungen.Lock==0)
- AuswurfClicked();
- else
- mbc->Status=MBCS_EJECTLOCK;
- break;
- case MBC_LOCK:
- if(mbc->Args[0]==1)
- Einstellungen.Lock=1;
- else
- Einstellungen.Lock=0;
- AuswurfLock();
- ZeigeCDInfo();
- break;
- default:
- mbc->Status=MBCS_UNKNOWN_CMD;
- }
- ReplyMsg(mbc);
- mbc=GetMsg(ControlPort);
- } while(mbc!=NULL);
- return(iconify);
- }
-
-